home *** CD-ROM | disk | FTP | other *** search
- Path: news.larc.nasa.gov!amiga-request
- From: amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator)
- Subject: v91i065: MP 1.0 - the MIDI Playground, Part02/02
- Reply-To: barrett@server.cs.jhu.edu
- Newsgroups: comp.sources.amiga
- Message-ID: <comp.sources.amiga:v91i065@ab20.larc.nasa.gov>
- References: <comp.sources.amiga:v91i064@ab20.larc.nasa.gov>
- Date: 15 Mar 91 19:25:17 GMT
- Approved: tadguy@uunet.UU.NET (Tad Guy)
- X-Mail-Submissions-To: amiga@uunet.uu.net
- X-Post-Discussions-To: comp.sys.amiga.misc
-
- Submitted-by: barrett@server.cs.jhu.edu
- Posting-number: Volume 91, Issue 065
- Archive-name: midi/mp-1.0/part02
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 2 (of 2)."
- # Contents: MP.DOC MP.uu
- # Wrapped by tadguy@ab20 on Fri Mar 15 14:25:14 1991
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'MP.DOC' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'MP.DOC'\"
- else
- echo shar: Extracting \"'MP.DOC'\" \(16064 characters\)
- sed "s/^X//" >'MP.DOC' <<'END_OF_FILE'
- XMP: A MIDI Playground
- XAuthor: Daniel J. Barrett, barrett@cs.jhu.edu.
- XNo Copyright: 100% Public Domain.
- X Please share this program with others.
- X
- XRequirements: A Commodore Amiga.
- XOptional: A MIDI Interface on your serial port.
- X 1 or more MIDI instruments.
- X (Without MIDI, this program is not very useful, except
- X perhaps as a source code example for serial port
- X programming and parsing input.)
- X
- XLegal stuff: Use this program entirely at your own risk. The author
- X bears no responsibility for any damage or data loss you
- X may incur through the use or misuse of this program.
- X
- X
- XGETTING QUICK HELP
- X
- X At the command line, type:
- X
- X 1> mp ?
- X
- XTABLE OF CONTENTS
- X
- XLine Section
- X===========================================================================
- X 18 Getting quick help
- X 24 Table of contents
- X 46 What is MP?
- X 77 What is MP not?
- X 84 MP concepts
- X118 A first exercise
- X132 Formal usage instructions for MP
- X162 The input text language
- X237 Practicing with the text language
- X264 Using the file input/output options to make new windows
- X277 Using redirection
- X306 Translating binary data to/from text
- X318 Using an alternate MIDI interface
- X359 Problems you may have with MP
- X425 Notes about the source code
- X457 Notes about the program's internals (and limitations)
- X
- X
- XWHAT IS MP?
- X
- X Have you ever wanted to see what MIDI data your instrument is
- Xtransmitting? Have you ever wanted to send your own MIDI data to your
- XMIDI instrument? Then MP is for you!!
- X
- X MP (MIDI Playground) is a versatile tool for sending, receiving,
- Xand storing MIDI data. It has many uses:
- X
- X o Learning about MIDI.
- X
- X o Discovering your instrument's system exclusive data
- X format.
- X
- X o Testing your instrument's MIDI capabilities.
- X
- X o Acting as a patch librarian. (VERY VERY basic, though.)
- X
- X o Helping you write MIDI software.
- X
- X Essentially, MP is a "translator" program that understands 3
- Xdata formats and translates between any pair:
- X
- X (1) English text
- X (2) Binary data
- X (3) MIDI data
- X
- XFormats (2) and (3) are really the same, but (2) is stored in files on your
- XAmiga, and (3) is transmitted via your MIDI interface.
- X
- X
- XWHAT IS MP NOT?
- X
- X MP is not a sequencer. It does not store any kind of timing
- Xinformation. MP simply sends and receives bytes in the order they are
- Xgiven.
- X
- X
- XMP CONCEPTS
- X
- X Like I said, MP translates between text, binary data, and MIDI
- Xdata. All you need to do is:
- X
- X (1) Choose a format for the input.
- X (2) Choose a format for the output.
- X (The input and output formats can be the same if you like.)
- X (3) Run MP.
- X
- XFor example, you can ask MP to use "text" as input and "MIDI" as output.
- XThis lets you type text in a very easy-to-learn language, and it immediately
- Xgets sent out as MIDI data. If you reverse these choices (input=MIDI,
- Xoutput=text), you can watch MIDI data appear on your screen in a simple
- Xbut readable format.
- X
- X Another use would be to use "MIDI" as input and "binary" as output.
- XThis lets you press keys and buttons on your instrument, and have all
- Xthe data stored in binary format in an Amiga file. To send the data back
- Xto the instrument, just use "binary" for input and "MIDI" for output!
- X
- X Yet another use is for MP to translate between binary data and
- Xreadable text. This can help you to understand the contents of a binary
- XMIDI file, or to create binary MIDI files by typing simple text commands.
- X(Note: this facility will work with ANY binary files, not just those
- Xcontaining MIDI data.)
- X
- X You can also ask MP to translate from one format to the same
- Xformat! For example, it can read MIDI data and "echo" it back to the
- Xsending instrument (translating MIDI to MIDI), copy binary files (translating
- Xbinary to binary), or let you practice with its text language (text to
- Xtext).
- X
- X
- XA FIRST EXERCISE
- X
- X Let's ask MP to translate from MIDI into text. Make sure your
- XMIDI synthesizer is hooked up properly to your Amiga. Type:
- X
- X 1> mp -im -ot
- X
- X(This asks MP to use MIDI input (-im) and text output (-ot).)
- X
- X Now go to your instrument and play notes, press buttons, turn
- Xdials, etc. You should see things appearing on your Amiga screen! To
- Xexit the program, type ^C (control-C) on the Amiga.
- X
- X
- XFORMAL USAGE INSTRUCTIONS FOR MP
- X
- X MP's syntax is:
- X
- X 1> mp -i{tbm} -o{tbm} [-g infile] [-p outfile]
- X
- XThe flags "-i" and "-o" are mandatory (they MUST appear, in any order).
- XThe flag "-i" represents input, and "-o" represents output. You also
- Xmust fill in the "[choice]" specifying text, binary, or MIDI. The syntax
- Xis:
- X
- X t Text
- X b Binary data
- X m MIDI
- X
- XFor example, to read text from the keyboard and send to MIDI:
- X
- X 1> mp -it -om
- X
- XTo read MIDI data and convert it to text:
- X
- X 1> mp -ot -im
- X
- XIf you would like to GET your input from a file (not the keyboard), you may
- Xspecify a file name with the -g option. Similarly, the -p option allows
- Xyou to PUT the output into a file (rather than the screen). The -g and -p
- Xoptions have no meaning, obviously, if your input and output are MIDI,
- Xrespectively.
- X
- X
- XTHE INPUT TEXT LANGUAGE
- X
- X If you do not already know what MIDI code looks like (for
- Xexample, hexadecimal 90 means "Note On, MIDI channel 0"), then this
- Xsection might not be useful to you yet. But feel free to try!
- X
- X MP understands many different kinds of text input. To use the
- Xtext input feature, you must learn a very simple syntax. If you are a
- XC programmer, you will recognize some of this language and feel right
- Xat home. (Don't worry... you don't have to be a C programmer to use MP!
- XIt will take a little practice, though.)
- X
- X MP understands NUMBERS (between 0 and 255) in:
- X
- X - Base 10 (decimal or "normal" numbers)
- X Just type the number normally.
- X Example: 123
- X
- X - Base 8 (octal)
- X Precede the number with a zero.
- X Example: 024
- X
- X - Base 16 (hexadecimal)
- X Precede the number with an "H" or the symbol "0x".
- X If the number begins with A through F, you can skip the
- X above symbols.
- X Examples: 0x2A H44 F7
- X
- X - Base 2 (binary)
- X Precede the number with a "#".
- X Example: #10010110
- X
- X All special symbols (such as "H", "0x", and the hexadecimal numbers
- X from A...F) are case-insensitive. That means capital and small
- X letters are equivalent.
- X
- XMP understands CHARACTERS as:
- X
- X - Individual characters.
- X Enclose in single quotes, like 'x'.
- X
- X - Character strings.
- X Enclose in double quotes, like "this is a string".
- X
- X C special characters (like '\n') are recognized both as individual
- X characters and in strings.
- X
- X If you type a RETURN in the middle of a string, it is interpreted
- X as a space character. (If you want a real newline character, use
- X \n.) If a string is too long to fit on your screen, break it into
- X 2 strings (or more), each surrounded by double-quotes.
- X
- X
- X All of these numbers/characters are automatically converted into
- Xbytes. As a result, you cannot specify a number with value greater than
- X255 (base 10) or less than 0. If you do, you will get an error message.
- X
- X MP also has a "comment" symbol. This lets you type text that is
- Xignored by MP. Any text following a semicolon (";") is ignored until
- Xthe end of the line. (This is just like the Amiga CLI comment symbol.)
- X(Of course, this does not occur if the semicolon is part of a character
- Xconstant or string.)
- X Why is a comment symbol useful? You can put text language commands
- Xin a file and send it to your MIDI instrument. Comments allow you to
- Xdocument the meaning of the contents of the file. For example:
- X
- X ; Send a C major chord on MIDI channel 0
- X 0x90 60 127 64 127 67 127
- X
- X
- X EVERY INDIVIDUAL NUMBER/CHARACTER/STRING/COMMENT THAT YOU TYPE
- XMUST BE SEPARATED FROM ITS NEIGHBORS BY WHITESPACE (blanks, tabs, newlines).
- XYes, even comments. This may change in a later version of the program.
- X
- X
- XPRACTICING WITH THE TEXT LANGUAGE
- X
- X Type the command:
- X
- X 1> mp -it -ot
- X
- XThis tells MP to translate from text into text, totally bypassing MIDI.
- XAs you type in the text language, you will see your data interpreted by
- XMP. To end MP, type control-C (^C).
- X
- X When you feel comfortable with the text language, try sending some
- Xdata to your synthesizer. Type:
- X
- X 1> mp -it -om
- X
- XHere is some data:
- X
- X H90 60 100
- X
- XThis tells the instrument to play Middle C (note 60) at volume (velocity)
- X100, assuming the instrument is on MIDI channel 0. To turn off the note:
- X
- X H80 60 0
- X
- XTo end MP, type control-C (^C).
- X
- X
- XUSING THE FILE INPUT/OUTPUT OPTIONS TO MAKE NEW WINDOWS
- X
- X On the Amiga, you can specify a NEW WINDOW as a file, rather than
- Xan actual disk file. The syntax is found in your AmigaDOS manual, under
- Xthe NewCLI or NewShell command. For example, to print your output in
- Xa 640x100 window, positioned at screen location (20,25), with window name
- X"MP-IN", you would use:
- X
- X 1> mp ... -g "CON:20/25/640/100/MP-IN" ...
- X
- XDo similarly for output windows, but use -p instead of -g.
- X
- X
- XUSING REDIRECTION
- X
- X You can use the CLI's INPUT REDIRECTION symbol to get input from a
- Xfile instead of from the keyboard. See your AmigaDOS manual for more details.
- XThe syntax is:
- X < filename
- X
- Xand it must appear immediately after the command name (MP). For example:
- X
- X 1> mp < infile -it -om
- X
- Xto send text data (translated to MIDI) from the file "infile" to the
- XMIDI instrument.
- X
- X Some sample input files are included with this program.
- X
- X You may also use the CLI's OUTPUT REDIRECTION symbol to send output
- Xto a file instead of to the screen. See your AmigaDOS manual for more
- Xdetails. The syntax is:
- X
- X > filename
- X
- Xand it must appear immediately after the command name (MP). For example:
- X
- X 1> mp > outfile -im -ot
- X
- Xto capture MIDI data (translated to text) into the file "outfile".
- X
- X
- XTRANSLATING BINARY DATA TO/FROM TEXT
- X
- X Suppose you have a binary file that you want to translate to
- Xtext. (It does not even have to be a MIDI data file!!) Just type:
- X
- X 1> mp < binaryFile -ib -ot
- X
- XIf you prefer to save your text results in a file, type:
- X
- X 1> mp < binaryFile > textFile -ib -ot
- X
- X
- XUSING AN ALTERNATE MIDI INTERFACE
- X
- X By default, the MP assumes that your MIDI interface
- Xis connected to your Amiga's internal serial port. If this is
- Xnot the case, you can override this by using an Amiga environment
- Xvariable and the SetEnv command. (See your Amiga documentation for
- Xfull details about SetEnv.)
- X
- X The name of the environment variable is MP_MIDI_DEVICE, and its
- Xvalue must be of the following format:
- X
- X 1) The name of the MIDI device driver, located in the
- X DEVS: directory of your system disk. It should be
- X something like "midi.device" or "serial2.device".
- X
- X 2) One colon character (':').
- X
- X 3) The unit number for the device. If you have only
- X 1 port using the device, your unit number is probably
- X zero.
- X
- X Example: midi.device:2
- X
- X Suppose you want to set up MP to use unit 3 the device
- X"AltMidi.device". Type:
- X
- X 1> SetEnv MP_MIDI_DEVICE AltMidi.device:3
- X
- XTo check that the value was set correctly, type:
- X
- X 1> GetEnv MP_MIDI_DEVICE
- X
- X If you are using a MIDI interface attached to your internal
- Xserial, port, YOU MAY IGNORE ALL OF THIS STUFF. By default, MP uses
- Xunit 0 of the device "serial.device".
- X
- X I cannot guarantee that MP will work with whatever alternate device
- Xdriver you choose. But I have tested the environment variable mechanism
- Xitself, and it works.
- X
- X
- XPROBLEMS YOU MAY HAVE WITH MP
- X
- X I have tested these programs fairly well on my own equipment:
- XAmiga 1000, Golden Hawk MIDI Gold interface, and an Oberheim Matrix-12.
- XIf the program doesn't work for you, first check:
- X
- X(?) Is the file "serial.device" in the DEVS: directory of your system
- X disk? If not, MP will refuse to run, and you will see an error
- X message like one of these:
- X
- X Cannot create a message port.
- X Cannot create an extended I/O request.
- X Cannot open the MIDI device.
- X Cannot set the serial parameters.
- X
- X Boot your Amiga with an original Workbench disk and try again.
- X
- X(?) Are you running a version of the Amiga operating system that is
- X older than 1.3? MP should work with some or all earlier
- X versions, but I have not tested this.
- X
- X(?) Are your MIDI cables connected properly? Remember that MIDI OUT
- X must always be connected to MIDI IN, and vice-versa.
- X
- X SYNTHESIZER COMPUTER
- X ----------- --------
- X MIDI IN <-------------------> MIDI OUT
- X MIDI OUT <-------------------> MIDI IN
- X
- X(?) Are you using the program correctly? Double-check the instructions
- X above.
- X
- X(?) Are you running another program that uses the serial port, such as
- X a communications program, printing program, or another MIDI program?
- X If so, this other program may be using the serial port. (MP
- X uses the serial port in "shared" mode so it doesn't hog the
- X serial port.) Exit your other programs and try again. If it
- X still doesn't work, reboot to make sure that your other programs
- X didn't accidently leave the serial port "locked".
- X
- X Some programs allow you to "release" their hold on the serial port
- X without exiting. (Example: Music-X.) This may be enough to allow
- X MP to run.
- X
- X If you run MP with the "-im" format (input from MIDI), you cannot
- X run MP a second time simultaneously. This is because the Amiga
- X serial port initialization routines will fail if there is another
- X program reading the serial port.
- X
- X(?) Are you running any other programs simultaneously with MP?
- X It is possible that a badly-written program could
- X interfere with the operation of other programs. Boot your Amiga
- X with an original Workbench disk and try again.
- X
- X(?) Is your synthesizer turned on? Seriously. This has happened
- X to me. :-)
- X
- XIf you are doing everything right, then there may be a bug in the
- Xprogram. For example, MP should NEVER crash your Amiga. If you
- Xbelieve that there is a bug, please contact me (electronic mail is
- Xpreferred). But first, try to reproduce the bug consistently. Can
- Xyou find a particular set of actions, keystrokes, etc., that ALWAYS
- Xmake the program crash? If you can, then I will be able to find the
- Xbug faster.
- X
- X
- XNOTES ABOUT THE SOURCE CODE
- X
- X The file "text.c" contains a good example of using a finite
- Xautomaton to read the text language and translate it into bytes. The
- Xcode is fairly robust and easy to modify. For example, I was able to
- Xadd "binary number" support in about 3 minutes, and "string" support in
- Xabout 10 minutes.
- X The theory of finite automata is extremely important for programmers,
- Xbut it can seem very "theoretical" at first. Believe me, it helps you
- Xwrite correct programs that are easy to modify later.
- X
- X The file "serial.c" contains serial port code that you are welcome
- Xto use. The function "DoTheIO()" implements asynchronous I/O in a very
- Xmultitasking-friendly way. The function "FastSerialRead()" is patterned
- Xafter Commodore's recommended method for reading the serial port quickly.
- XThe method is documented in the AMIGA ROM KERNEL REFERENCE MANUAL:
- XLIBRARIES AND DEVICES, for version 1.3 of the Amiga Operating System.
- X
- X The file "main.c" contains examples of using pointers to functions
- Xand pointers-to-pointers to functions. (The functions themselves are
- Xdefined in "iofunctions.c".)
- X
- X The file "getopt.c" contains my version of the powerful and useful
- XUNIX "getopt()" function. This gives the programmer a standard interface
- Xfor reading command-line options (flags) from the user. I have used this
- Xfile (unchanged) in a dozen programs.
- X
- X The "Makefile" is pretty generic. If you want to add a new
- Xfile to the program, just append its name (and its object file's name)
- Xto the SRC and OBJ macros, and type "make".
- X
- X
- XNOTES ABOUT THE PROGRAM'S INTERNALS (AND LIMITATIONS)
- X
- X MP uses a very inefficient method for sending MIDI data and
- Xreading/writing files: one byte at a time. This could definitely be
- Xmade faster, but takes some cleverness (and some internal buffering).
- XMP does read MIDI data very efficiently, though.
- X
- X This limitation is due to the byte-oriented nature of this program.
- XAlso, when the user is typing text, he/she wants immediate feedback from
- Xa MIDI device. I'm sure there is a better way to do this than my method.
- X
- X I did not build this program for large data transfers. It is
- Xmainly for transmitting small amounts of data for diagnostic purposes.
- XThis is why I have released the program before its I/O routines are
- Ximproved.
- END_OF_FILE
- if test 16064 -ne `wc -c <'MP.DOC'`; then
- echo shar: \"'MP.DOC'\" unpacked with wrong size!
- fi
- # end of 'MP.DOC'
- fi
- if test -f 'MP.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'MP.uu'\"
- else
- echo shar: Extracting \"'MP.uu'\" \(22805 characters\)
- sed "s/^X//" >'MP.uu' <<'END_OF_FILE'
- Xbegin 644 MP
- XM```#\P`````````#``````````(```\&```"&P````$```/I```/!D[Z(=Q(\
- XMYS`@)"\`$!8O`!0D;P`62FR``F<>2&R``B\*'P,O`DZZ!=@"@````/]/[P`.-
- XM3-\$#$YU#((````_9@I.N@9*<``0`V#H#`,`!&82#((````B9@HY?``!@`)PQ
- XM!+PH?`R\"80P"@````/]/[P`*8+Q(YS`@)"\`$!8O`!0D;P`6<``0`V``9
- XM`18O"B\"3KH!(@*`````_U!/3-\$#$YU+P).N@7,`H````#_6$]@ZB\*+P).^
- XMN@'(`H````#_4$]@V"\*+P).N@(,`H````#_4$]@QB\*+P).N@)0`H````#_F
- XM4$]@M"\*+P).N@*0`H````#_4$]@HB\*+P).N@.``H````#_4$]@D"\*+P).6
- XMN@0D`H````#_4$]@`/]^+PHO`DZZ`M("@````/]03V``_VHO"B\"3KH"\`*`T
- XM````_U!/8`#_5B\*+P).N@0*`H````#_4$]@`/]"'SP`#R\*+P).N@0*`H```
- XM``#_3^\`"F``_RAP`!`#8`#_(``"_\C_R/_(_M[^]/\$_TS_%O\H_SK_<O^&N
- XM``+_7O^:_ZX,0``19`K00#`[`-1.^P``8`#^ZDCG("`D+P`,)&\`$$'L@#\0]
- XM,"@`2(`(```$9PAP!$S?!`1.=0R"````.V8$<`5@[@R"````(V8$<`M@X@R"A
- XM````)V8$<`Y@U@R"````,&8$<`=@RB\"3KH>D@R`````2%A/9@1P"6"V0>R`8
- XM/Q`P*`!(@`@```)G#B`"!(`````P%(!P!F"80>R`/Q`P*`!(@`@```-G,$'LQ
- XM@#\0,"@`2(`(```"9PH@`@2`````,&`.+P).NAXV!(`````W6$\4@'`*8`#_*
- XM6G`"8`#_5$CG(``D+P`(0>R`/Q`P*`!(@`@```)G)A\\``9(>``*($)(:/_0H
- XM+R\`%DZZ`BX"@````/]/[P`.3-\`!$YU0>R`/Q`P*`!(@`@```1G!'`!8.9PE
- XM`F#B2.<@`"0O``@,@@```#!M+@R"````-VXF'SP`"$AX``@@0DAH_]`O+P`6@
- XM3KH!V`*`````_T_O``Y,WP`$3G5![(`_$#`H`$B`"```!&<$<`%@YG`"8.)(F
- XMYR``)"\`"$'L@#\0,"@`2(`(```#9S9![(`_$#`H`$B`"````F<*(`($@```C
- XM`#!@#B\"3KH=/`2`````-UA/(&\`#!"`<`I,WP`$3G5P`F#V2.<@`"0O``A!<
- XM[(`_$#`H`$B`"````V=*'SP`"DAX`!!![(`_$#`H`$B`"````F<*(`($@```)
- XM`#!@#B\"3KH<XEA/!(`````W+P`O+P`63KH!#`*`````_T_O``Y,WP`$3G5!O
- XM[(`_$#`H`$B`"```!&<$<`%@YG`"8.)(YR``)"\`"`R"````,&<(#((````Q3
- XM9A8@`@2`````,"!O``P0@'`,3-\`!$YU<`)@]DCG(``D+P`(#((````P9P@,6
- XM@@```#%F)A\\``Q(>``"($)(:/_0+R\`%DZZ`(0"@````/]/[P`.3-\`!$YU(
- XM0>R`/Q`P*`!(@`@```1G!'`!8.9P`F#B2.<@`"0O``@O`DZZ'!(,@````%A8+
- XM3V8(<`E,WP`$3G4,@@```#!M&@R"````-VX2(`($@````#`@;P`,$(!P"C
- XM0>R`/Q`P*`!(@`@```1G!'`!8,1P`F#`2.<P("1O`!`D+P`4)B\`&"(#(#P`Q
- XM``#_3KHQ/G(`$A*P@6P(<`-,WP0,3G4B`W``$!).NB>4%(!P`!`2(CP```#_?
- XMDH*P@6\$<`-@VG``$!+0@A2`<``0+P`<8,I(YR``)"\`"`R"````7&8(<!!,@
- XMWP`$3G4@;P`,$()P#V#P#*\````G``1F!'`!8`)P`@*`````_TYU2.<@("0O]
- XM``PD;P`0(`)@.D(28'`4O``'8&H4O``(8&04O``,8%X4O``*8%@4O``-8%(4;
- XMO``)8$P4O``+8$84@F!"<`),WP0$3G4$@````")G[%N`9^@$@`````EGL@2`?
- XM````+&?86X!GJE.`9ZQ9@&>N48!GL%F`9[)5@&>T58!GMF"^<``0+P`48+A(H
- XMYR`@)"\`#"1O`!)P`!`O`!!@5@R"````(F8.(&\`%D)0<`1,WP0$3G4,@@``S
- XM`%QF!'`18.Y![(`_$#`H`$B`"```!&<$<"!@`B`"%(!P`6#2'SP``2\*+P).'
- XMNO\8`H````#_3^\`"F"Z64!GI@1```UGWF"N#*\````*``1F!'`$8`)P!0*`^
- XM````_TYU2'@`_TAZ`!!(;(%L3KH:A$_O``Q.=4E.4%54"4U%04Y)3D<*,2TY@
- XM+BXN"41E8VEM86P@;G5M8F5R+@HP+BXN"4]C=&%L(&YU;6)E<BX*,'@N+BX)U
- XM2&5X861E8VEM86P@;G5M8F5R("AC87-E+6EN<V5N<VET:79E*2X*2"XN+@E($
- XM97AA9&5C:6UA;"!N=6UB97(@*&-A<V4M:6YS96YS:71I=F4I+@I!+48N+BX)@
- XM2&5X861E8VEM86P@;G5M8F5R("AC87-E+6EN<V5N<VET:79E*2X*(RXN+@E"9
- XM:6YA<GD@;G5M8F5R+@HG>"<)5&AE(&-H87)A8W1E<B`G>"<N("!#(&-H87)AW
- XM8W1E<B!S>6YT87@@;&EK92!<;B!A;F0@7'0@:7,@=F%L:60N"B(N+BXB"4$@#
- XM=&5X="!S=')I;F<N("`H3F5W;&EN97,@='5R;B!I;G1O('-P86-E(&-H87)AE
- XM8W1E<G,N*0I,87)G97-T(&QE9V%L(&EN<'5T('9A;'5E(&ES("5L9"`H8F%S5
- XM92`Q,"DN"D%L;"!V86QU97,@;75S="!B92!S97!A<F%T960@8GD@=VAI=&5SH
- XM<&%C92X*"@!(YR`@%"\`#"1O``YP`!`"+P!P`!`"+P!P`!`"+P!(>@!B+PI.X
- XMNABH+PH?`F%^$`)(@$'L@#\0,```2(`"0`#'3^\`&F<4<``0`B\`2'H`42\*:
- XM3KH8>D_O``P@4K'J``1D#B!24I(0O``*<`!P"F`,2'@`"B\*3KHK&E!/3-\$'
- XM!$YU1&5C("4S;&0L($]C="`E,VQO+"!(97@@)3-L6``L($-H87(@)R5C)P``-
- XM3E7_]DCG,`!T`'``$"T`"'(!Y:$F`,:!2H-G!'`!8`)P``8``#!R")*"0>W_R
- XM]Q&`&/]2@@R"````"&W.0BW__TAM__=(>@`6+RT`"DZZ%]1/[P`,3-\`#$Y=Y
- XM3G4L($)I;B`E<P``2.<P("8O`!`D;P`42H-F#"\*3KH43C0`6$]@#"\*+P-.-
- XMNA1$-`!03TI"9P1P`&`"<!0O`$ZZ,)983TS?!`Q.=4CG(`!T`"!O``A","@`(
- XM4H(,@@````-M[D'L@4`B;P`,(HA![(%6(F\`$"*((&\`%$*0(&\`&$*03-\`=
- XM!$YU2.<`("1O``@,$@!M9P@,*@!M``%F&A\J``).N@)<2D!43V8(<`!,WP0`Z
- XM3G5.N@2X+R\`$"\O`!`O"F$:#!(`;4_O``QG"`PJ`&T``68$3KH$0G`!8-!.F
- XM5?_R2.<@,"1M``PF;0`0+RT`"$AM__)(;?_V2&W_^DZZ`.!/[P`02&W__R\*)
- XM(&W_^DZ0%``,```$4$]G?A`"2(!(P&!D'RW__R\+(&W_]DZ07$]@8DAZ`&PO@
- XM"TZZ%HH?+?__+PH@;?_R3I!/[P`.8$9(>@!7+PM.NA9N'RW__R\*(&W_\DZ0"
- XM3^\`#F`J'RW__R\*(&W_\DZ02'H`22\+3KH61D_O``Y@#E-`9YA30&>D4T!G"
- XMOD`#_;DS?#`1.74YU15)23U(*`%9!3%5%(%1/3R!"24<@*&]V97)F;&]WY
- XM*0H`06X@=6YK;F]W;B!E<G)O<B!O8V-U<G)E9"X*``!(YS`P)&\`%"9O`!@D2
- XM+P`<)B\`("!#$!!(@$C`8$!!^@D0)(A!^@I6(D(BB&!"0?H)S"2(0?H*NB)"=
- XM(HA@,D'Z"'(DB$'Z"J0B0B*(8")!^@C@)(A!^@HF(D(BB&`2!$``8F?*!$``K
- XM"V?47T!GL>($,0*``!2(!(P&`@0?H)1B:(8"I!^@FT)HA@(D'Z"(`FB&`:[
- XM0?H)+B:(8!($0`!B9^($0``+9^1?0&?08.9,WPP,3G4@+P`&(&\`"A&O``0(W
- XM`!\O``1A!%1/3G5(YR``%"\`"`P"`'1G#`P"`&)G!@P"`&UF!'`!8`)P`$S?<
- XM``1.=4CG`"`D;P`(2A)G"DHJ``%G!'`!8`)P`$S?!`!.=4ZZ`BA(>``43KHM.
- XMW%A/3G5.5?O\2.<`($AZ`7!(;?P`3KHKJD*M^_Q(>@%N3KH3W"1`2H!/[P`,V
- XM9R!(;?O\2&W\`"\*3KH#C$I`3^\`#&8*<`!,WP0`3EU.=4*G0J=.NB`@*4"`(
- XM!%!/9A9(>@$[2&R!;$ZZ%&).N@&R<`!03V#2".P``(`/2'@`4B\L@`1.NB#DX
- XM*4"`"%!/9A9(>@$?2&R!;$ZZ%#).N@&"<`!03V"B".P``8`/(&R`"!%\`"``^
- XM3W(`(FR`""`M^_Q![?P`+&R(#$ZN_D1*@&<B+RW[_$AM_`!(>@#]2&R!;$ZZN
- XM$^I.N@$Z<`!/[P`08`#_6`CL``*`#R!L@`@1?``0`$]*+0`(9R8@;(`((7SWN
- XM]_?W`$0@;(`((7SW]_?W`$@@;(`(T?P```!/"-``!B!L@`@A?```>A(`/"!L1
- XM@`A"J``X(&R`"#%\``L`'")L@`@L;(@,3J[^.$J`9QA(>@"C2&R!;$ZZ$V9.D
- XMN@"V<`!03V``_M8([``#@`]P`6``_LIS97)I86PN9&5V:6-E`$U07TU)1$E?N
- XM1$5624-%`$-A;FYO="!C<F5A=&4@<&]R=`H`0V%N;F]T(&-R96%T92!E>'1EC
- XM;F1E9"!)+T\@<W1R=6-T=7)E"@!#86YN;W0@;W!E;B!S97)I86P@9&5V:6-E"
- XM("(E<R(L('5N:70@)60N"@!#86YN;W0@<V5T('-E<FEA;"!P87)A;65T97)SL
- XM+@H`""P``H`/9R9A2B)L@`@L;(@,3J[^(")L@`@L;(@,3J[^)B)L@`@L;(@,U
- XM3J[^/@@L``&`#V<*+RR`"$ZZ'U983P@L``"`#V<*+RR`!$ZZ'JI83TYU(&R`-
- XM"#%\``4`'")L@`@L;(@,3J[^.$YU(&R`"#%\``D`'")L@`@L;(@,3J[^."!LS
- XM@`@@*``@3G4@;(`(,7P``@`<(&R`""%O``0`*"!L@`@A;P`(`"1.=2!L@`@QZ
- XM?``#`!P@;(`((6\`!``H(&R`""%O``@`)$YU2.<X`'0`(&R`!'``$"@`#W(!3
- XMX:$H`0C$``PB;(`(+&R(#$ZN_C(@!"QLB`Q.KO[")@`(`P`,9P1T_V`H(FR`N
- XM""QLB`Q.KOXL2H!G%B)L@`@L;(@,3J[^)B!L@`@D*``@8`)@PB)L@`@L;(@,)
- XM3J[^(")L@`@L;(@,3J[^)B`"3-\`'$YU2.<@("1O``Q.NO\2)`!O-@R"```$J
- XM`&P$(`)@!B`\```$`"\`+PI.NO\4(FR`""QLB`Q.KOXX(&R`""`H`"!03TS?5
- XM!`1.=4AX``$O"DZZ_NY.NO\J4$]@Z$CG`#`D;P`,)F\`$"`*9PY*$F<*#!(`^
- XM.F<$%MI@[D(3#!(`.F8&2BH``6862'H`1DAL@6Q.NA#.<`!03TS?#`!.=5**A
- XM+PI.N@#:2D!83V822'H`?$AL@6Q.NA"J<`!03V#:+PI.NA98(&\`&""`<`%8M
- XM3V#(66]U<B!-241)(&1E=FEC92!N86UE("AV87)I86)L92!-4%]-241)7T1%O
- XM5DE#12D@:7,@;6ES<VEN9R!A(&-O;&]N"F%N9"]O<B!A('5N:70@;G5M8F5RY
- XM+@H`66]U<B!-241)(&1E=FEC92!U;FET(&YU;6)E<B`H=F%R:6%B;&4@35!?M
- XM34E$25]$159)0T4I(&UU<W0@8F4*82!P;W-I=&EV92!I;G1E9V5R+@H`2.<`>
- XM("1O``@@"F<$2A)F"'``3-\$`$YU2A)G'!`22(!![(`_$#```$B`"````F8$M
- XM<`!@WE**8.!P`6#60JR`$"`L@!2PKP`$;`XO+P`,+R\`#&$(4$].=7#_8/I(<
- XMYP`@)&\`""`L@!3E@"!R"``,$``M9DP@+(`<(BR`%.6!('(8`!`P"`%(@$C`O
- XM*4"($&<P#*P````MB!!F#%*L@!1P_TS?!`!.=2\LB!!(;(`42&R`'"\O`!@OJ
- XM"F$*3^\`%@</]@W$CG.#`F;P`8)&\`("0O`"0F+P`H4I(O`R\O`"!.N@^8@
- XM*`!03V<L($0,*``Z``%F#"\*+P(O"V$T3^\`#"\*+P(O"TZZ`6`@`T_O``Q,H
- XMWPP<3G4O`TAX``%A>"\*+P(O"TZZ`4)P/T_O`!1@X$CG(#`F;P`0)&\`%"0OD
- XM`!@@0B!0(!+E@")S"`!*,8@!9Q0@0B`2Y8`@4-'S"`!2B"E(@!!@)"`2Y8!*2
- XMLP@$9PX@$N6`*7,(!(`04I)@#"\LB!!(>``"80Y03R!"0I!2DDS?#`1.=4CG;
- XM,``F+P`,)"\`$$JL@!AG4@R#`````688+RR`("\"2'H`@$AL@6Q.N@XB3^\`.
- XM$&`R#(,````"9A@O+(`D+P)(>@!H2&R!;$ZZ#@)/[P`08!(O`DAZ`%Q(;(%LT
- XM3KH-[D_O``Q,WP`,3G5);&QE9V%L(&]P=&EO;BX*`$%N(&%R9W5M96YT(&ES@
- XM(')E<75I<F5D+"!B=70@;6ES<VEN9RX*`"TE8SH@)7,`+25C.B`E<P`M)6,ZG
- XM(&%N('5N:VYO=VX@97)R;W(@;V-C=7)R960*`$CG(#`F;P`0)&\`%"0O`!@@`
- XM$N6`2K,(`&<F(!+E@"!S"``,$``M9A@@0B!0(!+E@")S"`!*,8@!9@92DB!"^
- XM0I!,WPP$3G4@+(`LL*R`*&T22&R#`DZZ^\@I0(`H0JR`+%A/#*S_____@"AFC
- XM#$*L@"Q"K(`H<`1.=4JL@"AN#$*L@"Q"K(`H<`)@["`L@"Q2K(`L0>R#`B)O>
- XM``@2L`@`<`%@U$AX``%(;P`,3KKZSDZZ^NH,@`````%03V8$<`%@`G``3G5(;
- XMYS`P)&\`%"9O`!AT!$(3#`(``6="#`(``F<\#`(``V<V(%*QZ@`$9`H@4E*26
- XM<``0$&`(+PI.NA-66$\F``R`_____V<2+PL?`B\#3KKK3A0`3^\`"F"X#`(``
- XM`68(<`%,WPP,3G4,@_____]F"@P"``1F!'`$8.@,@_____]F!'`"8-P,`@`#-
- XM9@1P`V#2%H-P`F#,2.<`("1O``A2K(`P+RR`,$AZ`!PO"DZZ#`HO"A\O`!Q./
- XMNO,R3^\`$DS?!`!.=3PE-FQD/B`@(`!(YR`@)&\`#"!2L>H`!&0*(%)2DG``Y
- XM$!!@""\*3KH2I%A/)``,@/____]G#B!O`!`0@G`!3-\$!$YU<`1@]DCG("`D\
- XM;P`,%"\`$"!2L>H`!&0,(%)2DA""<``0`F`.<``0`B\`+PI.NAY&4$\,@/__F
- XM__]G!'`!8`)P`$S?!`1.=4CG("`D;P`,<``0+P`00>R`/Q`P``!(@`@```1G6
- XM!DS?!`1.=2!2L>H`!&0*(%)2DG``$!!@""\*3KH2"%A/)``,@/____]G$D'L=
- XM@#\0,"@`2(`(```$9@)@R@R"_____V<*+PHO`DZZ"RA03V"P3KKXHDYU3G5(,
- XMYP`P)F\`#$'L@6PD2$AZ`:`O"TAZ`4XO"DZZ"MA(>`!P2'@`9TAX`&](>`!I^
- XM+PM(>@&"+PI.N@J\2'H!MB\*3KH*LD_O`#1(>@'B+PI.N@JD2'@`:4AZ`?DO6
- XM"DZZ"I9(>`!O2'H"&2\*3KH*B$AX`&](>`!I2'H"-2\*3KH*=DAZ`E8O"DZZ^
- XM"FQ/[P`X2'@`=$AZ`E8O"DZZ"EI(>`!B2'H":B\*3KH*3$AX`&U(>@)\+PI.Z
- XMN@H^2'@`9TAZ`HTO"DZZ"C!(>`!P2'H"M"\*3KH*(D_O`#Q(>@+9+PI.N@H4`
- XM2'H"^$AX`'!(>`!B2'@`;TAX`&U(>`!I+PM(>@+!+PI.N@GP2'@`;4AX`&](P
- XM>`!T2'@`:2\+2'H"[B\*3KH)U$_O`$A(>`!T2'@`:2\+2'H##B\*3KH)O$AZ7
- XM`S$O"DZZ";)(>`!T2'@`:4AX`#](>@,^+PI.N@F<3^\`,$S?#`!.=4U)1$D@@
- XM4&QA>6=R;W5N9"`H)7,I+"!V97)S:6]N("5S+"!B>2!$86YI96P@0F%R<F5T,
- XM="X@(#$P,"4E(%!U8FQI8R!$;VUA:6XA"@`Q+C``57-A9V4Z("5S("TE8SQ&L
- XM3U)-050^("TE8SQ&3U)-050^(%LM)6,@:6YF:6QE72!;+25C(&]U=&9I;&5=B
- XM"@!4:&4@<')O9W)A;2!Q=6ET<R!A="!E;F0M;V8M9FEL92P@;W(@=VAE;B!>Q
- XM0R!I<R!P<F5S<V5D+@H`"E1H92!F;&%G<R!M87D@87!P96%R(&EN(&%N>2!O3
- XM<F1E<CH*``DM)6,)4W!E8VEF>2!T:&4@:6YP=70@9F]R;6%T+B`@(%M-04Y$N
- XM051/4EE="@`)+25C"5-P96-I9GD@=&AE(&]U='!U="!F;W)M870N("!;34%.0
- XM1$%43U)970H`"0DB+25C(B!A;F0@(BTE8R(@;75S="!%04-((&)E(&9O;&QON
- XM=V5D(&)Y`"!E>&%C=&QY(&]N92!O9CH*``D)"25C"51E>'0@*')E861A8FQEY
- XM(&)Y(&AU;6%N<RDN"@`)"0DE8PE":6YA<GD@9&%T82`H9F]R(&9I;&5S*2X*V
- XM``D)"25C"4U)1$D@*'5S:6YG($U)1$D@<&]R="DN"@`)+25C"4=E="!D871AG
- XM(&9R;VT@=&AI<R!F:6QE+B`@("!;1&5F875L=#UK97EB;V%R9%T*``DM)6,)V
- XM4'5T(&1A=&$@:6YT;R!T:&ES(&9I;&4N("`@(%M$969A=6QT/7-C<F5E;ET*7
- XM``I%>&%M<&QE<SH*``DE<R`M)6,E8R`M)6,E8R`M)6,@9&%T80DE<PH`4F5AZ
- XM9"!-241)("8@<'5T(&ET(&EN=&\@8FEN87)Y(&9I;&4@(F1A=&$B+@`))7,@/
- XM+25C)6,@+25C)6,)"5)E860@='EP960@=&5X="P@<V5N9"!T;R!-241)("AF]
- XM=6XA*2X*``HB)7,@+25C)6,B('5N9&5R<W1A;F1S(&1E8VEM86PL(&]C=&%L!
- XM+"!H97@L`"!B:6YA<GDL(&-H87)A8W1E<G,L(&%N9"!S=')I;F=S+@H`1F]R6
- XM(&1E=&%I;',L('1Y<&4@)6,@=VAI;&4@:6X@(BTE8R5C(B!M;V1E+@H``"\OH
- XM``1(>@`02&R!;$ZZ!BA/[P`,3G50;&5A<V4@='EP92`B)7,@/R(@9F]R(&ENO
- XM<W1R=6-T:6]N<RX*`$CG`#`F;P`,+R\`$"\+3KH-FB1`2H!03V86+PLO+P`8F
- XM2'H`%DAL@6Q.N@703^\`$"`*3-\,`$YU0V%N;F]T("5S('1H92!F:6QE("(EK
- XM<R(L"@!(YR`@)&\`#"\"=/XB"BQLB!1.KO^L)!\D`&<2(@(L;(@43J[_IG`!-
- XM3-\$!$YU<`!@]DY5_`!(YR`@)&T`"'0!+PIAO$I`6$]G6$AZ`*<O"DAZ`')(\
- XM;(%L3KH%3DAL@6Q.NA>&2&R!0$AX`_](;?P`3KH$U$J`3^\`(&<B$"W\`$B`T
- XM2,`O`$ZZ!*(,@````%E83V<$<`%@`G``-`!@`G0!8`)T`$I"9Q(O"DAZ`%E(A
- XM;(%L3KH$]$_O``PP`DS?!`1.74YU1FEL92`B)7,B(&%L<F5A9'D@97AI<W1ST
- XM+@I/5D525U))5$4@:70_(%LE<UTZ(`!997,O3F\L(%)%5%523CU.;P`E<R!NN
- XM;W0@;W9E<G=R:71T96XN"@H``$CG,#`F;P`4)&\`&"0O`!PF+P`@(`IG!$H2&
- XM9@I![(%6(D,BB&`P+PI.NO[L2D!83V<(<`!,WPP,3G5(>@!.2'H`2"\*3KK^M
- XM3"!#((!/[P`,9@1P`>(`MG!$H39@I![(%`(D(BB&`<2'H`*$AZ`"(O"TZZ<
- XM_AX@0B"`3^\`#&8$<`!@L'`!8*QW`'=R:71E`'(`<F5A9```2.<P,"1O`!0F;
- XM;P`8)"\`'"8O`"`@"F<00>R!0+7(9P@O"DZZ&!183R`+9Q!![(%6M\AG""\+(
- XM3KH8`%A/2H)G""\"3KH9Y%A/2H-G""\#3KH9V%A/3-\,#$YU2.<`,"9O``PD7
- XM;P`0(`IG&DH29Q8O"DZZ%9Y83U*`+P!.NAHD)H!83V8(<`!,WPP`3G4O"B\3%
- XM3KH:6'`!4$]@['``3G5.5?_L2.<@("0M``@D;0`,2&W_\$AM__1(;?_X2&W_H
- XM_$AM_^U.NNNT#((````!3^\`%&<:#((````"9AY(>@#"+RH`!$ZZ`ZQ*@%!/[
- XM9@PO$DZZ^!!83V```(A(;?_P2&W_]$AM_^TO"B\"3KH`XDI`3^\`%&882'H`O
- XMBDAL@6Q.N@+6+Q).NOR:3^\`#&!22&W_^$AM__PO+?_P+RW_]$ZZ_BI*0$_O4
- XM`!!F`F`T("R`%+"";!A(>@!V2&R!;$ZZ`I@O$DZZ_%Q/[P`,8!0O+?_X+RW_J
- XM_$AM_^U.NNL^3^\`#"\M__`O+?_T+RW_^"\M__Q.NOYP3^\`$$S?!`1.74YU!
- XM/P!4:&5R92!I<R!A;B!E<G)O<B!I;B!Y;W5R(&]P=&EO;G,O9FQA9W,N"@!9+
- XM;W4@9V%V92!M92!T;V\@;6%N>2!A<F=U;65N=',N"@``2.<^,"@O`"`F;P`D;
- XM)&\`*"HO`"PL+P`P=`%(;(`T+PLO!$ZZ\CXF``R`_____T_O``QG``#L(`-@;
- XM``#$,`)(P$H29@1R`6`"<@#`@30`+PI"IR!L@!`?$$ZZ['S$0$_O``I@``"X!
- XM,`)(P$HJ``%F!'(!8`)R`,"!-``O"DAX``$@;(`0'Q!.NNQ.Q$!/[P`*8```(
- XMBC`"2,`@;(`02A!G!'(!8`)R`,"!-``O+(`0+P5.NOV\Q$!03V!B,`)(P"!LL
- XM@!!*$&<$<@%@`G(`P($T`"\L@!`O!DZZ_9;$0%!/8#PP`DC`2BH``F8$<@%@X
- XM`G(`P($T`%(J``)@(G0`8!X$@````&=GCE6`9P#_,EV`9P#_5E.`9Z11@&?&=
- XM8-Y@`/[\2D)G$"\*3KKK[$I`6$]G!'`!8`)P`$S?#'Q.=4CG`"!A%B\O``A."
- XMN@;\)$!A,"`*6$],WP0`3G63R2QLB`Q.KO[:*4"'`B!LAP(I:`"XAP8@;(<""
- XM(7S_____`+A.=2!LAP(A;(<&`+A.=2`O``0,@````&!C#@R`````>F(&!(``@
- XM```@3G5(YS`R+&\`&"8O`!PD;P`@)DY3@V]&(%*QZ@`$9`H@4E*2<``0$&`(7
- XM+PI.N@<.6$\D``R`_____V<.%H)2BPR"````"F;,8!2WSF<(""H``0`-9@APC
- XM`$S?3`Q.=4(3(`Y@]$CG("!![P`4)$@O"B\O`!0O+P`43KH-#B0`(`)/[P`,,
- XM3-\$!$YU2.<@("0O``PD;P`0#(+_____9Q(@"F<.2FH`#&<(""H``@`,9PAP7
- XM_TS?!`1.=4JJ``AF""\*3KH58%A/(%*QZ@`(9A`@:@`$L>H`"&+84I(E4@`$1
- XM0>H`#`BH``$``4'J``P(T``$4Y(@4A""<``0`F"V3OH$%DSO`P``!+/(9PQP_
- XM`!`8L!E6R/_Z9@1P`$YU8P1P`4YU</].=6%P0^R#`D7L@P*UR68.,CP!6FL(;
- XM=``BPE')__PI3X@8+'@`!"E.B`Q(YX"`""X`!`$I9Q!+^@`(3J[_XF`&0J?SN
- XM7TYS0_H`($ZN_F@I0(@49@PN/``#@`=.KO^48`1.N@`:4$].=61O<RYL:6)R>
- XM87)Y`$GY``!__DYU2.<`,"9O`!`O#B(\``$``#`L@O@O`4C`(@#CB-"!XX@BG
- XM'RQLB`Q.KO\Z+%\I0(@<9AY(YP$&F\TN/``!```L;(@,3J[_E$S?8(`N;(@8E
- XM3G4@;(@<0F@`!"!LB!PQ?``!`!`@;(@<,7P``0`*(&R(&"`LB!B0J``$4(`I$
- XM0(@@(&R((""\34%.6"\.D\DL;(@,3J[^VBQ?)$!*J@"L9S(O"R\O`!`O"DZZ6
- XM`.PI?`````&()"!LB!Q8B`!0@``@;(@<T?P````*`%"``$_O``Q@5B\.0>H`=
- XM7"QLB`Q.KOZ`+%\O#D'J`%PL;(@,3J[^C"Q?*4"(*"!LB"A*J``D9R(O#B!L+
- XMB"@@:``D(A`L;(@43J[_@BQ?+RR(*"\*3KH">%!/*6R(*(@L+PXL;(@43J[_4
- XMRBQ?(&R('""`+PXL;(@43J[_Q"Q?(&R('"%```9*J@"D9R1(YR`")#P```/M[
- XM0?H`-"((+&R(%$ZN_^),WT`$(&R('"%```PO+(@L+RR(,$ZZY8I03R\`3KH6[
- XM3EA/3-\,`$YU*@!(YS@R)B\`'"@O`"`F;P`D($-*J`"L9Q0@0R`H`*SE@"Q`W
- XM("X`$.6`)$!@!"1L@OH0$DB`2,#0A%2`*4"(-"\.<@`@+(@T+&R(#$ZN_SHL:
- XM7RE`B#AF!DS?3!Q.=1`22(!(P"0`+P)!Z@`!+P@O+(@X3KH%LDAZ`48@0M'LV
- XMB#@O"$ZZ$Z8O!"\++RR(.$ZZ`3`@;(@X0C`H`"E\`````8@P)$+5[(@X4HHFF
- XM2D_O`"`0$DB`2,`D``R`````(&<@#((````)9Q@,@@````QG$`R"````#6<(B
- XM#((````*9@12BF#,#!(`(&UV#!(`(F8J4HH0&DB`2,`D`&<<%L(,@@```")FF
- XM$`P2`")F!%**8`9"*___8`)@VF`X$!I(@$C`)`!G+`R"````(&<D#((````)<
- XM9QP,@@````QG%`R"````#6<,#((````*9P06PF#*0AM*@F8"4XI2K(@P8`#_N
- XM4D(3+PYR`"`LB##E@%B`+&R(#$ZN_SHL7RE`B"QF"$*LB#!@`/[4=``D;(@XJ
- XM8!H@`N6`(&R(+"&*"``O"DZZ#;+5P%**6$]2@K2LB#!MX"`"Y8`@;(@L0K`(&
- XM`&``_IP@`$SO`P``!"`((B\`#$H89OQ3B!#95\G__`2!``$``&KR0B!.=2!O:
- XM``1P`!(O``L0&+`!5\C_^F<$<`!.=5-((`A.=4CG.#(F;P`<*"\`("\.<`!#&
- XM^@#$+&R(#$ZN_=@L7RE`B#QF!DS?3!Q.=2\.($0@:``D(&@`!"QLB#Q.KO^R7
- XM+%\D0$J`9W@O#D/Z`)D@:@`V+&R(/$ZN_Z`L7RQ`2H!G4$CG(`(D/````^TB=
- XM+P`$+&R(%$ZN_^),WT`$)@!G,B`#Y8`D`"!")V@`"`"D)T,`G$CG(`(D/```R
- XM`^U!^@!.(@@L;(@43J[_XDS?0`0G0`"@+PX@2BQLB#Q.KO^F+%\O#B)LB#PL4
- XM;(@,3J[^8BQ?0JR(/&``_U!I8V]N+FQI8G)A<GD`5TE.1$]7`"H`2.<P("1OH
- XM`!`0$DB`#$``(&<*$!)(@`Q```EF!%**8.AV`!`22(`,0``M9@9V`5**8`P0X
- XM$DB`#$``*V8"4HIT`&`:(`(B`.6(T('CB!(:2(%(P="!)``$@@```#`0$DB`#
- XM0>R`/Q`P``!(@`@```)FTDJ#9P8@`D2`8`(@`DS?!`Q.=4CG`#(L;P`0+PY.O
- XMN@O4#(````#\6$]C"'``3-],`$YU2'H`<DALAPI.NA"0+PY(;(<*3KH";DAZZ
- XM`&%(;(<*3KH!-"1`2H!/[P`89@1P`*0>R'"B9((%*QZ@`$9`H@4E*2<``0L
- XM$&`(+PI.N@`P6$\6@`P``/]G"E*+0>R("K?(9=0O"DZZ#8)"$T'LAPH@"%A/H
- XM8(9%3E8Z`'(``$CG,#`D;P`4(`IG%G``,"H`#"8`9PP(`P`*9@8(`P`#9PAPU
- XM_TS?#`Q.=2!2L>H`!&4``)I*J@`(9@@O"DZZ#JA83S`J``P"0`"@9S!![(%`J
- XM)DAP`#`K``P"@```0"`,@```0"!F""\+3KH*_EA/U_P````60>R"^+?(9=9!]
- XMZ@`,`E"O_R\J`!`O*@`($"H`#DB`2,`O`$ZZ`WPD`$_O``QN'$J"9@1P`F`"0
- XM<`1!Z@`,<@`R$("!,(!P_V``_V@DJ@`(($+1Z@`()4@`!"!24I)P`!`08`#_W
- XM3DAX__].N@#N+P`O+P`0+R\`$$ZZ``A/[P`03G5(YSPR+&\`("1O`"0F;P`HZ
- XM*"\`+"8\```$`!`22(!(P"H`#(````!R9@XD/```$``F/````@!@*`R%````D
- XM=V8()#P``!,!8!@,A0```&%F""0\```9`6`(<`!,WTP\3G52BA`22(`,0``KV
- XM9@P0*@`!2(`,0`!B9PP0$DB`#$``8F8*4HH(PP`$"((`#!`22(`,0``K9AH@@
- XM`@B````D``C"``$@`P*`___Y_R8`",,`"R`.9PPO`B\.3KH`L"@`4$]*A&V4M
- XM#(0````4;(P71``.-T,`#"`+8()(YP`@0>R!0"1(2FH`#&<8U?P````60>R"6
- XM^+7(9@AP`$S?!`!.=6#B0FH`%$*20JH`!$*J``@@"F#F3.\#```$(`A*&&;\=
- XM4T@0V6;\3G5,[P,```0@""(O``Q@`A#95\G__&<,!($``0``:O!.=4(84<G_?
- XM_`2!``$``&KR3G4O+P`(2'@#`2\O``QA!D_O``Q.=4CG/C(F;P`D*B\`*$ZZ*
- XM#Y8D;(@<=@!@$B`#(@#CB-"!XXA*L@@`9Q!2@S!L@OBQPV[F>`A@``$J"`4`S
- XM"6=02.<@`G3_(@LL;(@43J[_K$S?0`0L`&<X+PXB!BQLB!1.KO^F+%\O#B(+U
- XM+&R(%$ZN_[@L7TJ`9A@O#BQLB!1.KO]\+%\H``R`````S68``-1(YR`")#P`9
- XM``/M(@LL;(@43J[_XDS?0`0D`$J"9@``E`@%``AF!G@!8```J$CG(`(D/```Z
- XM`^XB"RQLB!1.KO_B3-]`!"0`9A`O#BQLB!1.KO]\+%\H`&!Z+PYP(4/Z`+PL@
- XM;(@,3J[]V"Q?+$!*@&<0+PXB5RQLB`Q.KOYB+%]@,$CG,`)V`4'Z`)XD""(7X
- XM+&R(%$ZN_]!,WT`,2.<P`G;_=``B%RQLB!1.KO^^3-]`#&`L(`4"@```!0`,A
- XM@```!0!F'"\.(@(L;(@43J[_W"Q?>`4I1(A`</],WTQ\3G4@`R(`XXC0@>.(!
- XM)8((`"`#(@#CB-"!XX@UA0@$"`4`"V<62.<P`G8!=``B%RQLB!1.KO^^3-]`3
- XM#"`#8+YD;W,N;&EB<F%R>0```$CG,#`D+P`4)F\`&$ZZ#>`@`B(`XXC0@>.(Y
- XM)$#5[(@<2H)M##!L@OBQPF\$2I)F$"E\`````XA`</],WPP,3G4P*@`$2,`"I
- XM@`````,,@`````%F#"E\````!HA`</]@VDCG,`(F+P`H)`LB$BQLB!1.KO_6D
- XM3-]`#"8`#(#_____9A0O#BQLB!1.KO]\+%\I0(A`</]@I"`#8*!(YW``-`'$Q
- XMP"8!2$/&P$A#0D/4@TA`P,%(0$)`T(),WP`.3G5(YR`P)F\`$"\.</\L;(@,\
- XM3J[^MBQ?)``,@/____]F"'``3-\,!$YU+PXB/``!``%P(BQLB`Q.KO\Z+%\D"
- XM0$J`9A(O#B`"+&R(#$ZN_K`L7W``8,XE2P`*%6\`%P`)%7P`!``(0BH`#A5"L
- XM``\O#I/)+&R(#$ZN_MHL7R5``!`@"V<0+PXB2BQLB`Q.KOZ>+%]@#$'J`!0O<
- XM"$ZZ!>I83R`*8(!(YP`@)&\`"$JJ``IG#B\.(DHL;(@,3J[^F"Q?%7P`_P`(7
- XM)7S_____`!0O#G``$"H`#RQLB`Q.KOZP+%\O#G`B(DHL;(@,3J[_+BQ?3-\$2
- XM`$YU2.<@,"9O`!`D+P`4(`MF"'``3-\,!$YU+PXB/``!``$@`BQLB`Q.KO\ZU
- XM+%\D0$J`9@1P`<%7P`!0`(-4(`$B5+``X@"F#*2.<`("1O``@@"F8&3-\$W
- XM`$YU%7P`_P`()7S_____`!0E?/____\`&"\.<``P*@`2(DHL;(@,3J[_+BQ?F
- XM8,Y.5?WT2.<_,B9M``@L;0`0?@`D;0`,%A)F"B`'3-],_$Y=3G52B@P#`"5G8
- XM0B0'(%.QZP`$9`P@4U*3$(-P`!`#8`YP`!`#+P`O"TZZ!5103PR`_____V<`G
- XM!'A2@A829@0@`F"X4HH,`P`E9L(N`G@`*WP````@__P6&G``$`-@:`C$``!@E
- XM\@C$``%@[`C$``)@Y@C$``-@X$WN``0D+O_\2H)L!@C$``!$@A8:8%8K?```7
- XM`##__'0`8!@@`N>`<@`2`]"!T(+0@B0`!((````P%AIP`!`#0>R`/Q`P``!(=
- XM@`@```)FU&`<!$``(&>>5T!GH%]`9Z)30&>,54!G@E=`9ZQ@LBM"__@D/```S
- XM?<8,`P`N9EX6&@P#`"IF%DWN``0D+O_\2H)L!B0\``!]QA8:8#!T`&`8(`+G+
- XM@'(`$@/0@=""T((D``2"````,!8:<``0`T'L@#\0,```2(`(```"9M0,@@``/
- XM?<9G""M\````(/_\*@(,`P!H9@8(Q``'8!8,`P!L9@8(Q``&8`H,`P!,9@8(^
- XMQ``(%AHK2@`,<``0`V```9Y@``,J"`0`!V<,3>X`!"!N__PPAV`<"`0`!F<,2
- XM3>X`!"!N__P@AV`*3>X`!"!N__P@AW0`8``!LDWN``0D;O_\+PI.N@,0)``,?
- XMA0``?<983V<&M(5O`B0%8``!CDWN``06+O__0>W]^"1($(-T`6```7AT"&`0[
- XM`$0`2'9X=!!@!@C$``1T"@P#`%AF"$'Z`J0@"&`&0?H"K2`(*T#]]`@$``9G=
- XM"DWN``0L+O_\8!@(!``$9PI-[@`$+"[__&`(3>X`!"PN__P(!``$9PI*AFP&J
- XM1(8(Q``%0>W_^"1(#(4``'W&9@)Z`4J&9@1*A6<<(`8B`DZZ!9P@;?WT%3`(M
- XM`"`&(@).N@68+`!FY$'M__B1RB0("`0``V=N#`,`;V842H)G"@P2`#!G"+2%@
- XM;00J`E*%8%0,`P!X9P8,`P!89DA*@F=$#!(`,&<^M(5L$$'M_?JQRF0(%3P`M
- XM,%*"8.P(!```9AP,K0```##__&82(`)4@+"M__AL""HM__A5A6#*%0,5/``PC
- XM5(*TA6P00>W]^+'*9`@5/``P4H)@[&!,!$``)6<`_L($0``S9P#^T@1```MG6
- XM`/ZJ4T!G`/[(6T!G`/["6T!G`/Y`4T!G`/ZH4T!G`/ZF5T!G`/YB54!G`/ZHH
- XM5T!G`/Z:8`#^&@@$``1G*`@$``5G!A4\`"U@&@@$``%G!A4\`"M@#@@$``)G\
- XM!A4\`"!@`E."4H+>@@@$``!F``"0#*T````P__QF0@@$``1G/#`$`D``)F<T:
- XM(%.QZP`$9`X@4U*3$)IP`!`J__]@#G``$!HO`"\+3KH!I%!/#(#_____9P``;
- XMR%.M__A3@F`T(%.QZP`$9!`@4U*3$*W__W``$"W__V`0<``0+?__+P`O"TZZY
- XM`6I03PR`_____V<``(Y2AR`M__A3K?_XL()NP"H"(`)3@DJ`9RX@4['K``1DT
- XM#B!34I,0FG``$"K__V`.<``0&B\`+PM.N@$D4$\,@/____]G2*"`0``&<\%
- XM)`5@+"!3L>L`!&0.(%-2DQ"\`"!P`'`@8`Q(>``@+PM.N@#N4$\,@/____]G(
- XM$E*'("W_^%.M__BP@F[(8`#[1'#_8`#[2#`Q,C,T-38W.#E!0D-$148`,#$RT
- XM,S0U-C<X.6%B8V1E9@`@;P`$(`A*&&;\4TB1P"`(3G4@;P`$((A8D$*H``0A7
- XM2``(3G5(YP`@)&\`""`*9D1![(%`)$A*:@`,9R8P*@`,`D`""&8<2'C__R\*C
- XM3KH`6@R`_____U!/9@AP_TS?!`!.==7\````%D'L@OBUR&7&<`!@Z$AX__\OS
- XM"DZZ`"Q03V#:2.<`($'L@4`D2"\*3KH!F%A/U?P````60>R"^+7(9>I,WP0`*
- XM3G5(YSP@)&\`&"@O`!P@"F<``6HT*@`,9P`!8@@"``EF``%:"`(``V8``5)!W
- XMZ@`,`E#O_4JJ``AF'`R$_____V8(<`!,WP0\3G4O"DZZ`JXT*@`,6$\(`@`.D
- XM9C0@4K'J``AC'DAX``$@$I"J``0O`!`J``Y(@$C`+P!.N@0H3^\`#"2J``@@+
- XM:@`0T=(E2``$#(3_____9@1V`&`"%@0@$I"J``@J`#`"`D``H&=(3_____A
- XM9QH@4E*2$(-!Z@`,"-``!C000?K_%"E(B$12A0R$_____V<,#`,`"F<&NJH`.
- XM$&4$>/]@#"52``1P`!`#8`#_4@@"``YG*$J%9QPO!2\J``@0*@`.2(!(P"\`@
- XM3KH$6K"%3^\`#&9.0>H`#`B0``8,A/____]F$B2J``@E:@`(``1P`!`#8`#_%
- XM"D'Z_IXI2(A$0>H`#`C0``8DJ@`((&H`$-'2)4@`!"!24I(0@W``$`-@`/[>?
- XM0>H`#`CH``(``25J``@`!"2J``AP_V``_L1.5?_V2.<X("1M``AT`"`*9P9*Y
- XM:@`,9@IP_TS?!!Q.74YU""H``0`,9@HO"DZZ_<Z$@%A/$"H`#DB`2,`O`$ZZ#
- XM!AZ$@`@J````#5A/9PHO*@`(3KH!G%A/2FH`%&=22'H`;DAM__=.N@)*."H`^
- XM%'8`4$]P`#`$<@I.N@"`!H`````P<@>2@T'M__<1@!@`2$1"1$A$B/P`"E*#C
- XM#(,````%;=!"+?__2&W_]TZZ`P983T*20JH`!$*J``A":@`,2H)G!G#_8`#_8
- XM5'``8`#_3E1-4`!(YT@`0H1*@&H$1(!21$J!:@9$@0I$``%A/DI$9P)$@$S?%
- XM`!)*@$YU2.=(`$*$2H!J!$2`4D1*@6H"1(%A&B`!8-@O`6$2(`$B'TJ`3G4O_
- XM`6$&(A]*@$YU2.<P`$A!2D%F($A!-@$T`$)`2$"`PR(`2$`R`H+#,`%"04A!0
- XM3-\`#$YU2$$F`2(`0D%(04A`0D!T#]"`TX&V@6($DH-20%'*__),WP`,3G5(;
- XMYR`@)&\`#'1!$"H`#DB`2,`O`$ZZ`3!*@%A/9P1T(6`(0>R!;+7(9Q@E?```+
- XM!```$$AX!`!.N@"V)4``"%A/9A0E?`````$`$$'J``\E2``(-#P`@$'J``QP<
- XM`#`0,@)(P8"!,(`E:@`(``0DJ@`(3-\$!$YU2.<`,BQO`!"7RR1LB$A@#$'JZ
- XM``B]R&<.)DHD4B`*9O!,WTP`3G4@"V<$)I)@!"E2B$@O#B`J``10@")*+&R(&
- XM#$ZN_RXL7V#82.<`,"1LB$A@&"92+PX@*@`$4(`B2BQLB`Q.KO\N+%\D2R`*G
- XM9N1"K(A(3-\,`$YU2.<@("0O``Q*@F8(<`!,WP0$3G4O#G(`(`)0@"QLB`Q.+
- XMKO\Z+%\D0$J`9@1P`>0?K_GBE(B$PDK(A()4(`!"E*B$@@"E"`8,1,[P,`_
- XM``0@"!#99OQ.=4CG("`D+P`,(`(B`..(T('CB"1`U>R('$J";0PP;(+XL<)OY
- XM!$J29A`I?`````.(0'#_3-\$!$YU+PX@`B(`XXC0@>.((&R('"(P"``L;(@41
- XM3J[_*"Q?2H!G!'`!8`)P`.<P("0O`!!.N@%J(`(B`..(T('CB"1`U>R(#
- XM'$J";0PP;(+XL<)O!$J29A`I?`````.(0'#_3-\$#$YU2.<P`B`O`"13@"8`9
- XM)"\`("(2+&R(%$ZN_[Y,WT`,)@`,@/____]F%"\.+&R(%$ZN_WPL7RE`B$!P'
- XM_V"^2.<P`G8`=``B$BQLB!1.KO^^3-]`#&"F2.<`("1O``@O#B(*+&R(%$ZN)
- XM_[@L7TJ`9A@O#BQLB!1.KO]\+%\I0(A`</],WP0`3G5P`V2.<P,"0O`!0FQ
- XM;P`83KH`H"`"(@#CB-"!XX@D0-7LB!Q*@FT,,&R"^+'";P1*DF80*7P````#>
- XMB$!P_TS?#`Q.=3`J``0"0``#9@PI?`````:(0'#_8.0(*@`#``1G%DCG,`)V%
- XM`70`(A(L;(@43J[_ODS?0`Q(YS`")B\`*"0+(A(L;(@43J[_T$S?0`PF``R`V
- XM_____V84+PXL;(@43J[_?"Q?*4"(0'#_8)`@`V",2.<@`"\.(CP``!``<``L>
- XM;(@,3J[^SBQ?)``(```,9Q)*K(@D9@@@`DS?``1.=4ZZTB!P`R2JR(4&<4M
- XM(&R(4"!H``1.D"!LB%`I4(A08.9*K(A$9P8@;(A$3I`O+P`$3KH`!EA/3G5(0
- XMYS``)B\`#$JLB!QG-'0`8`HO`DZZ`4I83U*",&R"^+'";NXO#C`L@OA(P"(`L
- XMXXC0@>.((FR('"QLB`Q.KO\N+%]*K(A,9P8@;(A,3I!*K(+^9Q`O#B(L@OXL2
- XM;(@43J[_IBQ?2JR(5&<((&R(5""LB%A*K(A<9Q`O#B)LB%PL;(@,3J[^8BQ?<
- XM2JR(8&<0+PXB;(A@+&R(#$ZN_F(L7TJLB&1G$"\.(FR(9"QLB`Q.KOYB+%]*(
- XMK(AH9Q`O#B)LB&@L;(@,3J[^8BQ?2.<`!BQX``0(+@`$`2EG$$OZ``A.KO_B#
- XM8`9"I_-?3G,J7TJLB"AF-$JLB#AG+"\.("R(-")LB#@L;(@,3J[_+BQ?+PX@$
- XM+(@PY8!8@")LB"PL;(@,3J[_+BQ?8!PO#BQLB`Q.KO]\+%\O#B)LB"@L;(@,1
- XM3J[^ABQ?+PXB;(@4+&R(#$ZN_F(L7R`#+FR(&$YU3-\`#$YU2.<@("0O``P@-
- XM`B(`XXC0@>.()$#5[(@<2H)M##!L@OBQPF\$2I)F$"E\`````XA`</],WP0$Y
- XM3G4P*@`$`D"``&8.+PXB$BQLB!1.KO_<+%]"DG``8-P``````^P````!````.
- XM`0``(E(````````#\@```^H```#``````````````````````````````0``8
- XM``$````````3/```$TT```````````````!I.F\Z9SIP.G@``"`@("`@("`@_
- XM(#`P,#`P("`@("`@("`@("`@("`@("`@D$!`0$!`0$!`0$!`0$!`0`P,#`P,<
- XM#`P,#`Q`0$!`0$!`"0D)"0D)`0$!`0$!`0$!`0$!`0$!`0$!`0%`0$!`0$`*0
- XM"@H*"@H"`@("`@("`@("`@("`@("`@("`D!`0$`@````````````````````Z
- XM`````````````````````````````````````````````````````````````
- XM`````````````````````````````````````````````````````````````
- XM`````````````````````````````````````````````````@````````$`#
- XM``````````````````0``0`````!```````````````````$``(``````0``-
- XM`````````````````````````````````````````````````````````````
- XM`````````````````````````````````````````````````````````````
- XM`````````````````````````````````````````````````````````````
- XM`````````````````````````````````````````````````````````````
- XM`````````````````````````````````````````````````````````````
- XM`````````````````````````````````````````````````````````````
- XM`````````````````````````````````````````````````````````````
- XM`````````````````````````````````````````````````````````````
- XM````````````````````%``````````````#[`````(`````````'@```"(`%
- X3```````#\@```^L````!```#\@``9
- X``
- Xend
- Xsize 16264
- END_OF_FILE
- if test 22805 -ne `wc -c <'MP.uu'`; then
- echo shar: \"'MP.uu'\" unpacked with wrong size!
- fi
- # end of 'MP.uu'
- fi
- echo shar: End of archive 2 \(of 2\).
- cp /dev/null ark2isdone
- MISSING=""
- for I in 1 2 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked both archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
- Mail comments to the moderator at <amiga-request@uunet.uu.net>.
- Post requests for sources, and general discussion to comp.sys.amiga.misc.
-